package api

import (
	"net/http"
	"vblog/apps/user"
	"vblog/common"

	"github.com/gin-gonic/gin"
)

func (h Handler) Login(c *gin.Context) {
	// 初始化一个请求对象
	in := user.NewLoginRequest()
	err := c.BindJSON(in)
	if err != nil {
		common.SendFaild(c, err)
		return
	}
	// 处理用户的请求
	// 调用业务逻辑来处理业务逻辑
	ins, err := h.svc.Login(c.Request.Context(), in)
	if err != nil {
		common.SendFaild(c, err)
		c.AbortWithError(http.StatusOK, err)
		return
	}
	// 为用户的浏览器设置cookie
	// domain: 192.168.95.134, 只把cookie设置在指定域名的访问api请求上面,限制了非域名的请求.
	// 通过127.0.0.1  != 192.168.95.134 ,所以不会获得cookie
	c.SetCookie(user.AUTH_COOKIE_NAME, ins.AccessToken, 3600*12, "/", "192.168.95.134", false, false)
	c.JSON(http.StatusOK, ins)
}

func (h Handler) Logout(c *gin.Context) {
	// 初始化一个请求对象
	in := user.NewLogoutRequest()
	in.Username = c.Query("username")
	// 处理用户的请求
	// 调用业务逻辑来处理业务逻辑
	err := h.svc.Logout(c.Request.Context(), in)
	if err != nil {
		common.SendFaild(c, err)
		c.AbortWithError(http.StatusOK, err)
		return
	}
	// 为用户的浏览器设置cookie
	// domain: 192.168.95.134, 只把cookie设置在指定域名的访问api请求上面,限制了非域名的请求.
	// 通过127.0.0.1  != 192.168.95.134 ,所以不会获得cookie
	c.JSON(http.StatusOK, in)
}
